导航菜单
首页 >  웹서버Web Server 와 웹 어플리케이션 서버 WAS  > HTTP 서버 (Web Server) vs WAS (Web Application Server) 차이점 / 아파치 톰캣이란

HTTP 서버 (Web Server) vs WAS (Web Application Server) 차이점 / 아파치 톰캣이란

Http 서버, was 서버 차이점 공부를 위한 포스팅

 

목차

인터넷이 동작하는 과정웹 페이지, 웹 사이트, 웹 서비 및 검색 엔진의 차이점웹 서버란, (Http Server 란)웹 어플리케이션 서버란, (was 란)웹 서버 (http server) vs WAS

 

1. 인터넷이 동작하는 과정

웹과 웹 어플리케이션을 이야기하기전에, 인터넷에 대해서 공부해보았습니다.

 

인터넷이란, (internet 이란)

인터넷이란, 여러 통신망을 하나로 연결한다는 의미의 '인터 네트워크(inter-netowrk)' 라는 말에서 시작되었으며, 현재는 전 세계에 걸쳐 원거리 접속, 파일 전송, 전자 메일 등의 데이터 통신 서비스를 연결하는 컴퓨터 통신망 시스템을 의미합니다.

 

웹의 작동 방식브라우저가 DNS 서버로 이동하여 웹 사이트가 있는 서버의 실제 주소를 찾습니다(상점의 주소를 찾을 수 있음).브라우저는 HTTP 요청 메시지를 서버로 전송하여 웹 사이트의 복사본을 클라이언트에게 보내도록 요청합니다(상점에 가서 상품을 주문합니다).이 메시지와 클라이언트와 서버 간에 전송되는 모든 데이터는 TCP/IP를 사용하여 인터넷 연결을 통해 전송됩니다.서버가 클라이언트의 요청을 승인하면, 서버는 "200 OK" 메시지를 클라이언트에 발송합니다.그리고 나서 웹 사이트의 파일을 데이터 패킷이라고 불리는 일련의 작은 덩어리로 브라우저에 보내기 시작합니다.브라우저는 작은 덩어리를 완전한 웹 페이지로 조립하여 사용자에게 표시합니다(상품이 여러분의 문 앞에 도착합니다!).

 

2. 웹 페이지 vs 웹 사이트 vs 웹 서버 vs 검색엔진

👉 웹 페이지 - 웹 브라우저에서 표시할 수 있는 문서 (페이지라고도 함)

웹 페이지란, 브라우저에서 표시할 수 잇는 간단한 문서, 즉 HTML 파일을 말합니다/

👉 웹 사이트 - 웹 페이지의 모음

웹 사이트란, 고유한 도메인의 이름으로 연결된 웹 페이지의 모음입니다.웹 사이트의 한 페이지에서 다른 페이지로 이동할 수 있도록 하는 명시적 링크를 보통 제공합니다.

👉 웹 서버 - 인터넷에서 웹 사이트를 호스팅하는(보여주는) 컴퓨터 - 우리집에있는 컴퓨터가 아님

웹 서버는 하나 이상의 웹사이트를 호스팅 하는 "컴퓨터" 입니다."호스팅"은 모든 웹페이지와 지원 파일을 해당 컴퓨터에서 사용할 수 있음을 의미합니다. (쉡게 말해서 배포 - 물론 배포랑 호스팅은 다른 개념)

👉 검색 엔진 - 웹 브라우저에서 다른 웹 페이지를 찾는 데 도움이 되는 웹 서비스

 

 

3. HTTP server (Web Server)

HTTP servser 란 (웹 서버란)

  웹 서버는, 소프트웨어의 관점과, 하드웨어의 관점 2 가지로 해석이 가능한 용어입니다.

 

💡 소프트웨어에서의 HTTP Server ( 웹서버 ) 란, 웹 브라우저와 같은 "클라이언트" 로 부터 HTTP 프로토콜로 요청을 받고, 요청에 대해 HTML 문서와 같은 정적인 웹 페이지를 응답해주는 소프트웨어 입니다.

웹 사용자가 어떻게 호스트 파일들에 접근하는지를 관리HTTP 서버는 URL(Web address)과 HTTP의 소프트웨어 일부임 

💡 하드웨어에서 웹 서버란, 위와 같은 기능을 제공하는 컴퓨터 프로그램을 실행하는 하나의 컴퓨터 입니다.

웹사이트의 컴포넌트 파일들을 저장하는 컴퓨터컴포넌트 파일에는 html 문서/images/css stylesheets/JavaScript 파일 등이 컴포넌트 파일들을 최종 소비자의 디바이스에 전달함웹 서버는 인터넷에 연결되어 있고, 도메인 이름을 통해 접속될 수 있음

 

정리하자면

웹 서버란, HTTP 또는 HTTPS 를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전성해주는 서비스 프로그램을 말하며, 웹 서버 소프트웨어를 구동하는 하드웨어 또한 웹 서버라고 불려집니다.

 

💡 웹 서버의 주 기능은, 웹 페이지 (정적 컨텐츠) 를 클라이언트에게 전달하는 것 입니다.

(정적 컨텐츠 : 그림, CSS, 자바스크립트를 포함한 HTML)

 

웹 서버의 종류

아파치NginxIISGWS4. WAS 란 (웹 어플리케이션 서버란)

💡 Was - Web Application Server 란, 간단하게 Web Server 에서 처리하지 못하는 동적인 컨텐츠를 처리하는 서버입니다.

클라이언트의 request(요청) 을 받아 DB 조회나, 어떤 로직을 처리해야하는 동적인 컨텐츠를 response(응답)하는 서버입니다.Web Server 위에 서버 어플리케이션을 얹은 것입니다.  ( WAS = Web Server + Web Container)DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server 입니다.HTTP 를 통해 컴퓨터나 장치에 웹 어플리케이션을 수행해주는 미들웨어 입니다.쉽게 말해, 웹 서버(Nginx) 와 웹 어플리케이션 (Spring) 이 통신을 할 떄,, Nginx 는 java 를 알지 못하고, Spring(웹 어플리케이션) 은 웹 서버의 요청이 어떤걸로 들어오는지 모르고 신경도 쓰지 않습니다.WAS 에서, HTTP 요청을 java 로 바꾸고, JAVA Response를 Nginx 가 알 수 있도록 변환해줍니다.

요롷게 두기도하고, 이 WAS 앞에 Web Server 를 따로 두기도 한다.

 

Web Container

웹 컨테이너란 (서블릿 컨테이너란)

일단 명확하게 집어보자면 (틀렸다면 제발 말해주세요 ㅠㅠ)

웹 컨테이너란. JSP, Servlet을 실행시키는 소프트웨어이다.그래서 서블릿 컨테이너라고도 불리며, 이 JSP 와 Servlet 은 오직 자바 어플리케이션을 실행시키기 위한 것이다.Apache 는 CGI 라는 개념을 제공하고 (Nginx 는 모르겠네요..) CGI (공용 게이트웨이 인터페이스) 란, 2개 이상의 컴퓨터 간의 자료들을 주고 받는 프로그램, 또는 주고 받아 프로그램을 동작시키기위한 방법을 정의한 프로그램입니다.PHP, Perl, Python등의 언어는 Apache를 통해 CGI를 적용시키는 것이 가능한데, JAVA는 안된다고 합니다.즉, Java는 따로 CGI 와 같은 기능을 위해 컨테이너 라는 것이 필요하고, 이를 WAS 의 웹 컨테이너가 수행합니다.

 

💡 즉, 웹 컨테이너는 Java 서블렛과 상호작용하는 WAS의 구성요소이며, 자바 어플리케이션을 웹 서버상에서 잘 동작시키기위한 프로그램입니다.

👏🏻 WAS 내부에서 개발자 대신 서블릿을 관리해주는 녀석입니다!

 

웹 컨테이너의 동작 과정

클라이언트는 웹서버로 Request(요청)을 보냅니다.서블릿을 포함하는  WAS는 컨테이너로 요청을 보냅니다.컨테이너가 요청을 각 서블릿에게 전달합니다.서블릿 메소드가 로드됩니다.서블릿은 컨테이너에 관련 Response (응답) 을 넘겨줍니다.컨테이너는 이를 서버에 전달하고, 서버는 응답을 클라이언트에게 전달합니다.

 

WAS 의 내부 동작 과정

 

웹 서버로 부터 요청이 들어오면, 제일 먼저 컨테이너가 이를 처리합니다.컨테이너는 배포서술자(Web.xml) 을 참조하여 해당 서블릿에대한 스레드를 생성하고 요청( httpServletRequest ) 및 응답 (httpServletResponse) 객체를 생성하여 전달합니다.스레드란? - 프로세스 내에서 실제 작업을 수행하는 주체 컨테이너는 사용자가 요청한 URL을 분석하여 어느 서블릿에 대한 요청인지 찾는다.컨테이너는 서블릿을 호출 (service() ) 하여. HTTP Method 요청에 따라 메소드를 호출합니다.호출된 메소드는 동적 페이지를 생성한 후 HttpServletResponse 객체에 실어 컨테이너에 전달한다.컨테이너는 전달 받은 객체를 웹 서버에 전달하고 생성되었던 스레드르 종료하고 요청 ( HttpServletRequest ) 및 응답 (HttpServletResponse ) 객체를 소멸시킵니다.

 

5. Web Server vs WAS둘의 차이점은, 어떤 타입의 컨텐츠(정적, 동적)을 제공해 줄 것인가에 달려있습니다.

 

WAS 안에, Web Server 가 있는데 왜 분리 하는거지..?  라고 생각했는데

웹 서버와 WAS 는 각각 독립적으로 존재할 수 있고

👏🏻 대부분의 WAS 는 정적인 컨텐츠를 제공해주고 있기 때문에, 별도의 웹 서버 없이 WAS 만 존재할 수 있다고 합니다.

 

그렇다면 Web Server를 사용하는 이유는?

굳이 WAS와 별도로 Web server, HTTP Server 를 사용하는 이유는 다음과 같습니다.

 

1. WAS 가 해야할 일의 부담을 줄이기 위해서입니다.

WAS 앞에 웹 서버를 둠으로 써, 정적인 컨텐츠의 처리는 웹 서버에 맞기고, WAS 는 어플리케이션의 로직만 수행 가능하도록 기능을 분배해서 서버의 부담을 줄이기 위함입니다.

2. WAS의 환경 설정 파일을 외부에 노출시키지 않기 위해서라고 합니다.

클라이언트가 WAS 의 포트를 직접 연결하게 된다면, 중요한 설정 파일들이나 암호키들이 노출 될 가능성이 있습니다.따라서, Web Server 를 통해서만, WAS 에 접근하게 함으로써, 웹 서버와 WAS 에 접근하는 포트가 다르기 때문에 WAS 에 들어오는 포트에 방화벽을 쳐서 보안을 강화시킬 수 있다고 합니다.

 

📌 보통 이렇게, WAS 앞에 WebServer 를 두는 것을 프록시 서버라 하며, 대표적으로 Nginx가 리버스 프록시 서버의 역할을 수행합니다.

 

WAS 의 종류톰캣(Tomcat), WebSphere, Weblogic, JBoss, Jeus

이렇게 있는거 같은데, 톰캣 말고는 처음들어본다..ㅎ

 

아파치 톰캣이란?

Tomcat 은 WAS 이다.Tomcat을 아파치 톰캣이라고 부르기도 하는데, 이는 Tomcat (아파치 꺼) 가 아파치사에서 만든 Web Server : Apache 기능을 포함하고 있기 때문에  Apache Tomcat  이라고 부르기도 하고, 실제로 WAS 앞에 웹 서버를 두어서 Apache Tomcat 이라고 부르기도 한다고 합니다.

 

 

 

 

 

*참고

웹 서버란 : https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_web_server

WAS 와 Server 의 차이,and Web container란 : https://doozi316.github.io/web/2020/09/13/WEB26/

相关推荐: